/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.Util;

import com.Model.AcervoConteudo;
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;

/**
 *
 * @author Fellipe
 */
public class MoveDiretorioArquivo extends Thread {

    private AcervoConteudo ac;
    private FTPClient f = new FTPClient();

    public AcervoConteudo getAc() {
        return ac;
    }

    public void setAc(AcervoConteudo ac) {
        this.ac = ac;
    }

    @Override
    public void run() {

        System.out.println("Inicio thread");

        String destino = this.verificaDestino() + ac.getValor();
        String origem = "/Temp/" + ac.getValor();
        boolean resultado = this.moveArquivo(origem, destino);
        System.out.println("A operação foi: " + resultado);

        System.out.println("final thread");

    }

    public String verificaDestino() {

        if (ac.getCampo().getTipoCampo().getChaveTipoCampo() == 2) {
            return "/Documento/";
        } else if (ac.getCampo().getTipoCampo().getChaveTipoCampo() == 3) {
            return "/Imagens/";
        } else if (ac.getCampo().getTipoCampo().getChaveTipoCampo() == 6) {
            return "/Multimidia/";
        } else {
            return null;
        }
    }

    public boolean moveArquivo(String origem, String destino) {

        InputStream is = null;

        try {

            f.connect("201.22.59.253", 21);
            f.login("acervo_cliente", "videogastro");

            if (f.isConnected()) {
                System.out.println("esta conectado");
                System.out.println("Origem: " + origem + " Destino: " + destino);
                System.out.println("inicio recuperação de arquivo");
                is = f.retrieveFileStream(origem);
                System.out.println("arquivo recuperado");

                f.disconnect();
                f.connect("201.22.59.253", 21);
                f.login("acervo_cliente", "videogastro");

                if (is != null) {
                    System.out.println("setando tipo do arquivo a ser enviado");
                    if (f.setFileType(FTPClient.BINARY_FILE_TYPE)) {
                        System.out.println("tipo do arquivo setado");
                    } else {
                        System.out.println("nao deu pra setar");
                    }
                    if (f.storeFile(destino, is)) {
                        System.out.println("arquivo enviado");
                    } else {
                        System.out.println("nao deu pra enviar");
                    }
                    boolean b = f.deleteFile(origem);
                    if (b == true) {
                        System.out.println("arquivo origem deletado!");
                        return true;
                    } else {
                        System.out.println("arquivo origem nao pode ser deletado");
                    }
                } else {
                    System.out.println("arquivo nulo");
                }

            } else {
                System.out.println("não foi possivel estabelecer conexão com o ftp");
            }

        } catch (IOException ex) {
            System.out.println(ex);
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
                f.disconnect();
            } catch (IOException ex) {
                System.out.println(ex);
            }
        }

        return false;

    }
}
